home *** CD-ROM | disk | FTP | other *** search
/ Winzipper / Winzipper_ISO.iso / nt4.0 server / DRVLIB.NIC / IBMENIIN / OEMSETUP.INF < prev   
INI File  |  1996-07-31  |  42KB  |  1,351 lines

  1. ;***********************************************************************    
  2. ;
  3. ; OEMSETUP.INF
  4. ;
  5. ;       LAN Adapter/A for Ethernet "LEGENDS" card and driver SETUP file
  6. ;       This file can be named OEMSETUP.INF or OEMSETNT.INF  
  7. ;       Card:    IBM Part# 48G7171   IBM FRU# 48G7172  
  8. ;       Driver:  IBMENIIN.SYS
  9. ;
  10. ; History:
  11. ;    IBM
  12. ;       Robert Huggins  28-Apr-1994     Adapted to IBM LEGENDS card
  13. ;
  14. ;***********************************************************************
  15.  
  16. ;-----------------------------------------------------------------------
  17. ; OPTION TYPE
  18. ; -----------
  19. ; This identifies the Option type we are dealing with.  The different
  20. ; possible types are:
  21. ;
  22. ; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
  23. ;
  24. ;  Types specific to networking:
  25. ;
  26. ; NetAdapter,        a netcard / adapter combination or just a netcard
  27. ; NetDriver,         just a netcard driver
  28. ; NetTransport,      a complete NDIS-compliant TDI transport stack
  29. ; NetService,        an NT networking service
  30. ; NetWork,           a complete network ensemble.
  31. ; NetProvider        a complete network which supports NT MPR protocol
  32. ;-----------------------------------------------------------------------
  33.  
  34. [Identification]
  35.     OptionType = NetAdapter
  36.  
  37. ;-----------------------------------------------------------------------
  38. ; PlatformsSupported
  39. ; ------------------
  40. ; This identifies the platforms supported by the adapter card.
  41. ; Possible types are:
  42. ;
  43. ; ISA, EISA, MCA, various internal versions, etc.
  44. ;-----------------------------------------------------------------------
  45.  
  46. [PlatformsSupported]
  47.     MCA
  48.  
  49. ;-----------------------------------------------------------------------
  50. ; OPTION LIST
  51. ; -----------
  52. ; This section lists the OEM Option key names.  These keys are locale
  53. ; independent and used to represent the option in a locale independent
  54. ; manner.
  55. ;
  56. ;-----------------------------------------------------------------------
  57.  
  58. [Options]
  59.     IBMENIIN
  60.  
  61. ;***********************************************************************
  62. ; CONSTANTS FOR USING DIALOGS
  63. ;***********************************************************************
  64.  
  65. [FileConstants]
  66. ;
  67. ;  File names, etc.
  68. ;
  69. UtilityInf      = "UTILITY.INF"
  70. subroutineinf   = "SUBROUTN.INF"
  71. SoftwareType    = "driver"
  72. Exit_Code       = 0
  73.  
  74. ;
  75. ; EventLog Message File
  76. ;
  77. NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
  78. IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
  79.  
  80. ;
  81. ; Product Info
  82. ;
  83. Manufacturer    = "IBM"
  84. ProductMajorVersion     = "3"
  85. ProductMinorVersion     = "1"
  86. ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)
  87. ;
  88. ; Software
  89. ;
  90. ProductSoftwareName      = "IBMENIIN"
  91. ProductSoftwareImagePath = "\SystemRoot\System32\drivers\IBMENIIN.sys"
  92. NetRuleSoftwareType      = "IBMENIINSys ndisDriver IBMENIINDriver"
  93. NetRuleSoftwareUse       = $(SoftwareType)
  94. NetRuleSoftwareBindForm  = """IBMENIINSys"" yes no container"
  95. NetRuleSoftwareClass     = {"IBMENIINDriver basic"}
  96. NetRuleSoftwareBindable  = {"IBMENIINDriver IBMENIINAdapter non exclusive 100"}
  97.  
  98. ;
  99. ; Hardware
  100. ;
  101. ProductHardwareName      = "IBMENIIN"
  102. NetRuleHardwareType      = "IBMENIIN IBMENIINAdapter"
  103. NetRuleHardwareBindForm  = " yes yes container"
  104. NetRuleHardwareClass     = {"IBMENIINAdapter basic"}
  105.  
  106. ; MCA Unique Hardware ID
  107. ;
  108. ; For Legends, POS Register 100 is the LSB of the card ID  224 = E0
  109. ; For Legends, POS Register 101 is the MSB of the card ID  255 = FF
  110. ; For Legends, the Hex value FFEO expressed in decimal is 65504               
  111. ;
  112. POS_LSB = 224
  113. POS_MSB = 255
  114. MCA_ID  = 65504       
  115. ;
  116. ; Registry Key
  117. ;
  118. ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
  119. ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
  120.  
  121.  
  122.  
  123.  
  124. ;-----------------------------------------------------------------------
  125. ;
  126. ; Files 
  127. ;
  128. ;-----------------------------------------------------------------------
  129. [Source Media Descriptions]
  130.     1 = "Setup disk for IBM LAN Adapter/A for Ethernet" 
  131.  
  132. [Signature]
  133.     FileType = MICROSOFT_DRVLIB_FILE
  134. [GetSignature]
  135.     read-syms Signature
  136.     return $(FileType)
  137.  
  138. ;-----------------------------------------------------------------------
  139. ;
  140. ; Product Type 
  141. ;
  142. ;-----------------------------------------------------------------------
  143. [ProductType]
  144. STF_PRODUCT            = Winnt
  145. STF_PLATFORM           = I386
  146.  
  147.  
  148.  
  149. ;-----------------------------------------------------------------------
  150. ;
  151. ; Files-Inf 
  152. ;
  153. ; Note:  Size below controls gauge as file is being copied
  154. ;
  155. ;-----------------------------------------------------------------------
  156. [Files-INF]
  157. 1, OEMSETUP.INF , SIZE=40000, RENAME=$(!UG_Filename)
  158.  
  159.  
  160.  
  161. ;-----------------------------------------------------------------------
  162. ;
  163. ; Files-IBMENIIN 
  164. ;
  165. ;
  166. ; Note:  Size below controls gauge as file is being copied 
  167. ;         It might be related to the following error message:
  168. ; PreCondition Failure
  169. ; PreCondition Failed: File: D:\nt\private\windows\setup\src\gauge.c,Line:
  170. ; 242  
  171. ;
  172. ;-----------------------------------------------------------------------
  173. [Files-IBMENIIN]
  174. 1, IBMENIIN.SYS , SIZE=78848
  175.  
  176. [Files-HLP]
  177. 1, IBMENIIN.HLP, SIZE=999
  178.  
  179. ;-----------------------------------------------------------------------
  180. ;
  181. ; Languages Supported by this OEMSETUP.INF file  (known as STF_LANGUAGE)
  182. ;
  183. ;-----------------------------------------------------------------------
  184. [LanguagesSupported]
  185.     ENG
  186.  
  187.  
  188.  
  189. ;-----------------------------------------------------------------------
  190. ;
  191. ; Options Text for Language=ENG
  192. ;
  193. ;-----------------------------------------------------------------------
  194. [OptionsTextENG]                                                       
  195.     IBMENIIN = "IBM LAN Adapter/A for Ethernet (Part# 48G7171)" 
  196.  
  197.  
  198.  
  199. ;-----------------------------------------------------------------------
  200. ;
  201. ; File constants in the ENG language
  202. ;
  203. ;-----------------------------------------------------------------------
  204. [FileConstantsENG]
  205. ;
  206. ;  to override the default ""
  207. ;
  208. FunctionTitle = "IBM LAN Adapter/A for Ethernet (Part# 48G7171) Setup"
  209. ;
  210. ;  to override the default ""
  211. ;
  212. ProductSoftwareDescription = "NDIS 3.0 Ethernet driver"
  213. ;
  214. ;  to override the default ""
  215. ;
  216. ProductHardwareDescription = "IBM Part# 48G7171   FRU# 48G7172"
  217. ;
  218. ;  to override the default ""
  219. ;
  220. ProductSoftwareTitle = "IBM LAN Adapter/A for Ethernet driver"
  221. ;
  222. ;  to override the default ""
  223. ;
  224. ProductHardwareTitle = "IBM LAN Adapter/A for Ethernet (MCA)"
  225.  
  226.  
  227. CANNOT_FIND_ANY_CARD = "Network card is not present in the system."
  228. ShellCodeErrorTitle  = "Error: "$(FunctionTitle)
  229. ShellCodeErrorText   = "Shell Code Error."
  230.  
  231. ;-----------------------------------------------------------------------
  232. ;
  233. ; No override needed for Dialog Constants in English
  234. ;
  235. ;-----------------------------------------------------------------------
  236. [DialogConstantsENG]
  237. Help        = "&Help"
  238. Exit        = "Cancel"
  239. OK          = "OK"
  240. HelpContext = ""
  241. Continue    = "C&ontinue"
  242. Cancel      = "C&ancel" 
  243.  
  244. [FileDependentDlgENG]
  245. Edit1Label = "&Network Address:"
  246. Group1 = "Full Duplex Operation"
  247. Radio1 = "H&alf Duplex"
  248. Radio2 = "&Full Duplex"
  249. DlgType = "RadioCombination"
  250. DlgTemplate = "NETWORK_NUMBER"
  251. Caption = "Enter network address for adapter in slot "$(SlotNum)
  252. ComboListItemsIn = {}
  253. ComboListItemsOut = {}
  254. OptionsGreyed = {}
  255. HelpContext = 6666
  256. EditTextLim = 17
  257. EditTextIn  = $(NetworkAddress)
  258. EditFocus   = "ALL"
  259. RCCtlFocusOn = 403
  260.  
  261. ;-----------------------------------------------------------------------
  262. ;
  263. ; General Constants 
  264. ;
  265. ;-----------------------------------------------------------------------
  266. [GeneralConstants]
  267. ;
  268. ;  Program flow control variables.
  269. ;
  270. from      = ""
  271. to        = ""
  272. ;
  273. ;  Return codes; Exit_Code is set to one of these
  274. ;
  275. ExitCodeOk     = 0
  276. ExitCodeCancel = 1
  277. ExitCodeFatal  = 2
  278.  
  279. KeyNull         = ""
  280. MAXIMUM_ALLOWED   = 33554432
  281. RegistryErrorIndex = NO_ERROR
  282. KeyProduct      = ""
  283. KeyParameters   = ""
  284.  
  285. TRUE            = 1
  286. FALSE           = 0
  287. NoTitle         = 0
  288.  
  289. ExitState   = "Active"
  290. OldVersionExisted = $(FALSE)
  291.  
  292. DriverPath      = $(!STF_NTPATH)\drivers
  293.  
  294. [date]
  295.     ; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
  296.     ; Minute, Second }
  297.     Now = {} ? $(!LIBHANDLE) GetSystemDate
  298.  
  299.  
  300. ;---------------------------------------------------------------------------
  301. ; 1. Identify
  302. ;
  303. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  304. ;                as we are choosing currently.
  305. ;
  306. ; INPUT:         None
  307. ;
  308. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  309. ;                $($R1): Option Type (COMPUTER ...)
  310. ;                $($R2): Diskette description
  311. ;---------------------------------------------------------------------------
  312.  
  313. [Identify]
  314.     set !Stf-DebugOutputControl = 1
  315.  
  316.     Debug-Output "Starting Identify"
  317.     ;
  318.     ;
  319.     read-syms Identification
  320.  
  321.     set Status     = STATUS_SUCCESSFUL
  322.     set Identifier = $(OptionType)
  323.     set Media      = #("Source Media Descriptions", 1, 1)
  324.  
  325.     Return $(Status) $(Identifier) $(Media)
  326.  
  327. ;------------------------------------------------------------------------
  328. ; 2. ReturnOptions:
  329. ;
  330. ; DESCRIPTION:   To return the option list supported by this INF and the
  331. ;                localised text list representing the options.
  332. ;
  333. ;
  334. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  335. ;
  336. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  337. ;                                STATUS_NOLANGUAGE
  338. ;                                STATUS_FAILED
  339. ;                                STATUS_NOTSUPPORTED
  340. ;
  341. ;                $($R1): Option List
  342. ;                $($R2): Option Text List
  343. ;------------------------------------------------------------------------
  344.  
  345. [ReturnOptions]
  346.  
  347.     Debug-Output "Starting ReturnOptions"
  348.  
  349.     
  350.     ;
  351.     ;
  352.     set Status        = STATUS_FAILED
  353.     set OptionList     = {}
  354.     set OptionTextList = {}
  355.  
  356.     ;
  357.     ; Check if the language requested is supported
  358.     ;
  359.     set LanguageList = ^(LanguagesSupported, 1)
  360.     Ifcontains(i) $($0) in $(LanguageList)
  361.         ;
  362.         ; Check if the platforms requested is supported
  363.         ;
  364.         ifstr(i) $($1) == ""
  365.            goto returnoptions
  366.         endif
  367.  
  368.         set PlatformList = ^(PlatformsSupported, 1)
  369.         Ifcontains(i) $($1) in $(PlatformList)
  370.            goto returnoptions
  371.         else
  372.            set Status = STATUS_NOTSUPPORTED
  373.            goto finish_ReturnOptions
  374.         endif
  375.     else
  376.        set Status = STATUS_NOLANGUAGE
  377.        goto finish_ReturnOptions
  378.     endif
  379.  
  380.     ;
  381.     ; form a list of all the options and another of the text representing
  382.     ;
  383.  
  384. returnoptions = +
  385.     set OptionList     = ^(Options, 1)
  386.     set OptionTextList = ^(OptionsText$($0), 1)
  387.     set Status         = STATUS_SUCCESSFUL
  388.  
  389. finish_ReturnOptions = +
  390.     Debug-Output "Status=         "$(Status)
  391.     Debug-Output "OptionList=     "$(OptionList)
  392.     Debug-Output "OptionTextList= "$(OptionTextList)
  393.  
  394.     Return $(Status) $(OptionList) $(OptionTextList)
  395.  
  396. ;------------------------------------------------------------------------
  397. ;
  398. ; InstallOption:
  399. ;
  400. ;      This section is shelled to by main installation processing
  401. ;      or by NCPASHEL.INF during reconfig, removal, update, etc.
  402. ;
  403. ;
  404. ; FUNCTION:  To copy files representing Options
  405. ;            To configure the installed option
  406. ;            To update the registry for the installed option
  407. ;
  408. ; INPUT:     $($0):  Language to use
  409. ;            $($1):  OptionID to install
  410. ;            $($2):  SourceDirectory
  411. ;            $($3):  AddCopy  (YES | NO)
  412. ;            $($4):  DoCopy   (YES | NO)
  413. ;            $($5):  DoConfig (YES | NO)
  414. ;
  415. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  416. ;                            STATUS_NOLANGUAGE |
  417. ;                            STATUS_USERCANCEL |
  418. ;                            STATUS_FAILED
  419. ;
  420. ;------------------------------------------------------------------------
  421. [InstallOption]
  422.     Debug-Output "Starting InstallOptions"
  423.     Debug-Output "1= "$($1)
  424.     Debug-Output "2= "$($2)
  425.     Debug-Output "3= "$($3)
  426.     Debug-Output "4= "$($4)
  427.     Debug-Output "5= "$($5)
  428.     ;
  429.     ; Set default values for
  430.     ; extract parameters
  431.     ;
  432.     set Option   = $($1)
  433.     set SrcDir   = $($2)
  434.     set AddCopy  = $($3)
  435.     set DoCopy   = $($4)
  436.     set DoConfig = $($5)
  437.  
  438.     ;
  439.     ; Check if the language requested is supported
  440.     ;
  441.     set LanguageList = ^(LanguagesSupported, 1)
  442.     Ifcontains(i) $($0) NOT-IN $(LanguageList)
  443.         Return STATUS_NOLANGUAGE
  444.     endif
  445.  
  446.     set-subst LF = "\n"
  447.  
  448.     read-syms GeneralConstants
  449.  
  450.     read-syms FileConstants
  451.  
  452.     read-syms DialogConstants$(!STF_LANGUAGE)
  453.  
  454.     read-syms FileConstants$(!STF_LANGUAGE)
  455.  
  456.     detect date
  457.  
  458.     set-title  $(FunctionTitle)
  459.  
  460.     set to   = Begin
  461.     set from = Begin
  462. ;
  463. ;  Assume all is well.
  464. ;
  465.     set CommonStatus = STATUS_SUCCESSFUL
  466.  
  467.     EndWait
  468.  
  469. ;
  470. ;   Set up the operation-mode-based variables and gaily welcome
  471. ;   the user.  If the "install mode" variable is improperly set,
  472. ;   assume this is a new installation.
  473. ;
  474.  
  475. Begin = +
  476.     Ifstr(i) $(!NTN_InstallMode) == deinstall
  477.         set StartLabel = removeadapter
  478.     else-Ifstr(i) $(!NTN_InstallMode) == Update
  479.         set StartLabel = UpgradeSoftware
  480.     else-Ifstr(i) $(!NTN_InstallMode) == bind
  481.         set StartLabel = bindingadapter
  482.     else-Ifstr(i) $(!NTN_InstallMode) == configure
  483.         set CommonStatus = STATUS_REBOOT
  484.         Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
  485.             ;
  486.             ;   You cannot config the software component
  487.             ;
  488.             Debug-Output "Cannot configure the IBMENIIN driver software."
  489.             Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
  490.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  491.                 Debug-Output "ShellCode error: cannot get an error string."
  492.                 goto ShellCodeError
  493.             endif
  494.             set Error = $($R0)
  495.             set from = end
  496.             set to = end
  497.             goto nonfatalinfo
  498.         else
  499.             set StartLabel = configureadapter
  500.         endif
  501.     else
  502.         set StartLabel = installadapter
  503.         set OEM_ABANDON_OPTIONS = {}
  504.         set OEM_ABANDON_SOFTWARE = FALSE
  505.         set OEM_ABANDON_ON = TRUE
  506.     endif
  507.  
  508.     set from = $(fatal)
  509.     set to = $(fatal)
  510.     goto $(StartLabel)
  511.  
  512.  
  513.  
  514. ;-----------------------------------------------
  515. ; Installation Section
  516. ;-----------------------------------------------
  517.  
  518. installadapter = +
  519. ;
  520. ;   First, check whether the same version of the software exists
  521. ;
  522.     OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
  523.  
  524.     Ifstr $(KeyProduct) != $(KeyNull)
  525.         ;
  526.         ; Same version already existed in the local machine
  527.         ; Popup the dialog and ask the user whether he wants to continue
  528.         ;
  529.         CloseRegKey $(KeyProduct)
  530.  
  531.         ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
  532.            ;
  533.            ; Cannot Install the same software again
  534.            ;
  535.            Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
  536.                $(ProductVersion)
  537.            ifint $($ShellCode) != $(!SHELL_CODE_OK)
  538.                Debug-Output "ShellCode error: cannot get an error string."
  539.                goto ShellCodeError
  540.            endif
  541.  
  542.            goto end
  543.         else
  544.            ;
  545.            ; Add a new adapter card?
  546.            ;
  547.            Shell $(UtilityInf), CardExistedDlg
  548.  
  549.            ifint $($ShellCode) != $(!SHELL_CODE_OK)
  550.                Debug-Output "ShellCode error: cannot get an error string."
  551.                goto ShellCodeError
  552.            endif
  553.  
  554.            ifstr(i) $($R1) != "OK"
  555.                Set CommonStatus = STATUS_USERCANCEL
  556.                goto end
  557.            endif
  558.            set OldVersionExisted = $(TRUE)
  559.         endif
  560.     endif
  561.     goto nextstep
  562.  
  563.  
  564.  
  565. ;-----------------------------------------------
  566. ; Configuration Section
  567. ;-----------------------------------------------
  568. ;
  569. ;   Get the current values of all the parameters
  570. ;
  571. configureadapter = +
  572.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) NetCardKey
  573.     ifstr(i) $(NetCardKey) == ""
  574.         set CommonStatus = STATUS_USERCANCEL
  575.         goto successful
  576.     endif
  577.     GetRegValue $(NetCardKey) "ServiceName" ServiceInfo
  578.     set ServiceName = *($(ServiceInfo),4)
  579.     CloseRegKey $(NetCardKey)
  580.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ServiceName)"\Parameters" $(MAXIMUM_ALLOWED) ParamKey
  581.     ifstr(i) $(ParamKey) != ""
  582.         GetRegValue $(ParamKey),"NetworkAddress", NetworkAddressInfo
  583.         set NetworkAddress = *($(NetworkAddressInfo), 4)
  584.         GetRegValue $(ParamKey),"SlotNumber", SlotNumberInfo
  585.         set SlotNum = *($(SlotNumberInfo), 4)
  586.          GetRegValue $(ParamKey),"FullDuplex", FullDuplexInfo
  587.          set FullDuplex = *($(FullDuplexInfo), 4)
  588.          Ifstr(i) $(FullDuplex) == "0"
  589.              set RadioIn = {1}
  590.          else
  591.              set RadioIn = {2}
  592.          endif
  593.         read-syms FileDependentDlg$(!STF_LANGUAGE)
  594.          SetHelpFile $(!STF_CWDDIR)ibmeniin.hlp 6666 6666
  595.          Debug-Output "HELP FILE"$(!STF_CWDDIR)ibmeniin.hlp
  596.         ui start "InputDlg"
  597.         ifstr(i) $(DLGEVENT) == "CONTINUE"
  598.             set NewNetworkAddress = *($(EditTextOut),1)
  599.             ifstr(i) $(NetworkAddress) == $(NewNetworkAddress)
  600.                 set CommonStatus = STATUS_USERCANCEL
  601.             else
  602.                 SetRegValue $(ParamKey) {NetworkAddress,$(NoTitle),$(!REG_VT_SZ),$(NewNetworkAddress)}
  603.             endif
  604.              set FullDuplexIndex =  *($(RadioOut),1)
  605.              Ifint $(FullDuplexIndex) == 2
  606.                  ifstr(i) $(FullDuplex) == "0" 
  607.                     set FDX = "1" 
  608.                     SetRegValue $(ParamKey) {FullDuplex,$(NoTitle),$(!REG_VT_DWORD),$(FDX)}
  609.                      set CommonStatus = STATUS_REBOOT
  610.                  endif
  611.              else 
  612.                  ifstr(i) $(FullDuplex) == "1" 
  613.                  set FDX = "0" 
  614.                      SetRegValue $(ParamKey) {FullDuplex,$(NoTitle),$(!REG_VT_DWORD),$(FDX)}
  615.                  set CommonStatus = STATUS_REBOOT
  616.                  endif
  617.              endif
  618.             ui pop 1
  619.         else
  620.             set CommonStatus = STATUS_USERCANCEL
  621.             ui pop 1
  622.         endif
  623.         CloseRegKey $(ParamKey)
  624.     endif
  625.     goto successful
  626.  
  627.  
  628. nextstep = +
  629.     StartWait
  630.  
  631. installproduct = +
  632.  
  633.     Shell $(UtilityInf), MCAFindBus, $(POS_LSB), $(POS_MSB)
  634.  
  635.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  636.         goto ShellCodeError
  637.     endif
  638.  
  639.  
  640.     ifstr(i) $($R0) != "NO_ERROR"
  641.         set Error = $($R0)
  642.         goto fatal
  643.     endif
  644.  
  645.  
  646.     ifstr(i) $($R1) == {}
  647.         set Error = $(CANNOT_FIND_ANY_CARD)
  648.         set CommonStatus = STATUS_USERCANCEL
  649.         set from = "end" 
  650.         goto nonfatal
  651.     endif
  652.  
  653.  
  654.     set AdapterList = $($R1)
  655.  
  656.     ;
  657.     ; Add Software Component
  658.     ;
  659.     ifint $(OldVersionExisted) == $(FALSE)
  660.         ifstr(i) $(!NTN_InstallMode) == "install"
  661.            Ifstr(i) $(DoCopy) == "YES"
  662.  
  663.               Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
  664.  
  665.               Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  666.                   Goto ShellCodeError
  667.               Else-Ifstr(i) $($R0) == STATUS_FAILED
  668.                   Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
  669.                   ifint $($ShellCode) != $(!SHELL_CODE_OK)
  670.                       goto ShellCodeError
  671.                   endif
  672.                   set Error = $($R0)
  673.                   Goto fatal
  674.               Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
  675.                   Goto successful
  676.               Endif
  677.  
  678.               Set SrcDir = $($R1)
  679.  
  680.            Endif
  681.  
  682.            install "Install-Option"
  683.            ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
  684.               Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
  685.               ifint $($ShellCode) != $(!SHELL_CODE_OK)
  686.                   goto ShellCodeError
  687.               endif
  688.               set Error = $($R0)
  689.               goto fatal
  690.            endif
  691.         endif
  692.  
  693.         Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
  694.             $(ProductSoftwareName), +
  695.             $(ProductSoftwareName), +
  696.             $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
  697.             $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
  698.             $(NetEventDLL)
  699.  
  700.         Set OEM_ABANDON_SOFTWARE = TRUE
  701.  
  702.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  703.             Debug-Output "ShellCode error"
  704.             goto ShellCodeError
  705.         endif
  706.  
  707.         ;
  708.         ;   At this point:
  709.         ;     $R1 contains the product version key handle;
  710.         ;     $R2 contains the NetRules subkey handle;
  711.         ;     $R3 contains the new Services key handle; and
  712.         ;     $R4 contains the Parameters key
  713.         ;     $R5 contains the Linkage Key
  714.         ;
  715.         set RegistryErrorIndex = $($R0)
  716.  
  717.  
  718.         Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
  719.             EndWait
  720.             Debug-Output "Registry error: add software components"
  721.             CloseRegKey $($R1)
  722.             CloseRegKey $($R2)
  723.             CloseRegKey $($R3)
  724.             CloseRegKey $($R4)
  725.             CloseRegKey $($R5)
  726.             goto fatalregistry
  727.         endif
  728.  
  729.         Set SoftProductKey    = $($R1)
  730.         Set SoftNetRuleKey    = $($R2)
  731.         Set SoftServiceKey    = $($R3)
  732.         Set SoftParameterKey  = $($R4)
  733.         Set SoftLinkageKey    = $($R5)
  734.  
  735.  
  736.         set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
  737.                             {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
  738.                             {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
  739.                             {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
  740.                             {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
  741.                             {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
  742.                             {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
  743.  
  744.         Shell  $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
  745.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  746.             Debug-Output "ShellCode error."
  747.             goto ShellCodeError
  748.         endif
  749.  
  750.         set RegistryErrorIndex = $($R0)
  751.  
  752.         Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
  753.             EndWait
  754.             Debug-Output "Registry error: add value list."
  755.             CloseRegKey $(SoftProductKey)
  756.             CloseRegKey $(SoftNetRuleKey)
  757.             CloseRegKey $(SoftServiceKey)
  758.             CloseRegKey $(SoftParameterKey)
  759.             CloseRegKey $(SoftLinkageKey)
  760.             goto fatalregistry
  761.         endif
  762.  
  763.         set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
  764.                             {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
  765.                             {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
  766.                             {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
  767.                             {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
  768.                             {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
  769.  
  770.         Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
  771.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  772.             Debug-Output "ShellCode error."
  773.             goto ShellCodeError
  774.         endif
  775.  
  776.         set RegistryErrorIndex = $($R0)
  777.  
  778.         CloseRegKey $(SoftProductKey)
  779.         CloseRegKey $(SoftNetRuleKey)
  780.         CloseRegKey $(SoftServiceKey)
  781.         CloseRegKey $(SoftParameterKey)
  782.         CloseRegKey $(SoftLinkageKey)
  783.  
  784.         Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
  785.             EndWait
  786.             Debug-Output "Registry error: add value list."
  787.             goto fatalregistry
  788.         endif
  789.     endif
  790.  
  791.  
  792. ;
  793. ;
  794. ;
  795. ;
  796.     ForListDo $(AdapterList)                                 
  797.         set BusNum = *($($),1)
  798.         set SlotNum = *($($),2)
  799.         Debug-Output "BusNum= "$(BusNum)
  800.         Debug-Output "SlotNum= "$(SlotNum)
  801.         Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(BusNum), +
  802.             $(SlotNum), $(ProductHardwareDescription), $(ProductHardwareName) 
  803.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  804.             Debug-Output "IsNetCardAlreadyInstalled"
  805.             goto ShellCodeError
  806.         endif
  807.         ifstr $($R0) != "NO_ERROR"
  808.             set Error = $($R0) 
  809.             goto fatal
  810.         endif
  811.  
  812.         ifstr(i) $($R1) != "YES"
  813.  
  814. ;
  815. ;       Create the HARDWARE\Netcard region and its corresponding service
  816. ;
  817.  
  818.             Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
  819.  
  820.             ifint $($R4) != -1
  821.                 Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
  822.             endif
  823.  
  824.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  825.                 Debug-Output "Cannot add hardware component"
  826.                 goto ShellCodeError
  827.             endif
  828.  
  829.             set RegistryErrorIndex = $($R0)
  830.  
  831.             Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
  832.                 EndWait
  833.                 Debug-Output "Registry error: add hardware component"
  834.                 CloseRegKey $($R1)
  835.                 CloseRegKey $($R2)
  836.                 CloseRegKey $($R3)
  837.                 goto fatalregistry
  838.             endif
  839.  
  840. ;
  841. ;           At this point:
  842. ;
  843. ;           $R1  Registry key variable for HARDWARE\Netcard\(n)
  844. ;           $R2  Registry key variable for HARDWARE\Netcard\(n)\\NetRules
  845. ;           $R3  Registry key handle for <service>\Parameters key
  846. ;           $R4  Adapter number assigned to adapter
  847. ;           $R5  Service name generated by combining svc name with adapter number
  848. ;
  849.             set HardNetCardKey    = $($R1)
  850.             set HardNetRuleKey    = $($R2)
  851.             set HardParameterKey  = $($R3)
  852.             set AdapterNumber     = $($R4)
  853.             set SlotTitle         = $(ProductHardwareTitle)$(SlotNum)   
  854.             set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
  855.                                 {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(SlotTitle)},+
  856.                                 {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+
  857.                                 {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
  858.                                 {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
  859.                                 {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
  860.  
  861.             Shell  $(UtilityInf), AddValueList, $(HardNetCardKey), $(NewValueList)
  862.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  863.                 Debug-Output "ShellCode error"
  864.                 goto ShellCodeError
  865.             endif
  866.                  set RadioIn = {1}
  867.                 read-syms FileDependentDlg$(!STF_LANGUAGE)
  868.                  SetHelpFile $(!STF_CWDDIR)ibmeniin.hlp 6666 6666
  869.                  Debug-Output "HELP FILE"$(!STF_CWDDIR)ibmeniin.hlp
  870.                 ui start "InputDlg"
  871.                 ifstr(i) $(DLGEVENT) == "CONTINUE"
  872.                     set NetworkAddress = *($(EditTextOut),1)
  873.                      set FullDuplexIndex = *($(RadioOut),1)
  874.                      Ifint $(FullDuplexIndex) == 2
  875.                         set FDX = "1" 
  876.                      else 
  877.                         set FDX = "0" 
  878.                      endif
  879.                     ui pop 1
  880.                 else
  881.                     set CommonStatus = STATUS_USERCANCEL
  882.                     ui pop 1
  883.                     Debug-Output "Action: unknown. Bye."
  884.                     goto end
  885.                 endif
  886.                 Shell $(UtilityInf), GetBusTypeNum
  887.                 set BusTypeNum = $($R1)
  888.                 ifint $($ShellCode) != $(!SHELL_CODE_OK)
  889.                     Debug-Output "ShellCode error."
  890.                     goto ShellCodeError
  891.                 endif
  892.  
  893. ;
  894. ;           Add the rest of the parameters to the Services area
  895. ;      
  896.             Set NewValueList = {{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNum)},+
  897.                                 {BusType,$(NoTitle),$(!REG_VT_DWORD),3},+
  898.                                 {McaPosId,$(NoTitle),$(!REG_VT_DWORD),$(MCA_ID)},+
  899.                                 {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
  900.                                 {NetworkAddress,$(NoTitle),$(!REG_VT_SZ),$(NetworkAddress)},+
  901.                                 {SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)}}
  902.  
  903.             Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
  904.  
  905.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  906.                 Debug-Output "ShellCode error."
  907.                 goto ShellCodeError
  908.             endif
  909.  
  910.  
  911.             set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
  912.             set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
  913.  
  914.             set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
  915.                                 {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
  916.                                 {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
  917.                                 {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
  918.  
  919.             
  920.             Shell  $(UtilityInf), AddValueList, $(HardNetRuleKey), $(NewValueList)
  921.             
  922.             CloseRegKey $(HardNetCardKey)
  923.             CloseRegKey $(HardNetRuleKey)
  924.             CloseRegKey $(HardParameterKey)
  925.             
  926.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  927.                 Debug-Output "ShellCode error."
  928.                 goto ShellCodeError
  929.             endif
  930.         endif
  931.     EndForListDo
  932.  
  933.     goto writeparameters
  934.  
  935. ;
  936. ;   Write Parameters
  937. ;
  938. writeparameters = +
  939.     EndWait
  940.     goto successful
  941.  
  942. ;-----------------------------------------------
  943. ; Binding section
  944. ;-----------------------------------------------
  945. bindingadapter = +
  946.     set Error = "Binding: Not Implemented yet"
  947.     goto fatal
  948.  
  949. ;-----------------------------------------------
  950. ; Removeadapter section
  951. ;-----------------------------------------------
  952. removeadapter = +
  953.     Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
  954.         ; Remove Software Component
  955.         Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
  956.             $(ProductSoftwareName)
  957.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  958.             Debug-Output "ShellCode error"
  959.             goto ShellCodeError
  960.         endif
  961.  
  962.         set RegistryErrorIndex = $($R0)
  963.  
  964.         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  965.             goto fatalregistry
  966.         endif
  967.     else
  968.         Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  969.             $(ProductSoftwareName), $(!NTN_RegBase)
  970.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  971.             Debug-Output "ShellCode error"
  972.             goto ShellCodeError
  973.         endif
  974.  
  975.         set RegistryErrorIndex = $($R0)
  976.  
  977.         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  978.             goto fatalregistry
  979.         endif
  980.     endif
  981.  
  982.     goto end
  983.  
  984. ;-----------------------------------------------
  985. ; Upgrade Software section
  986. ;-----------------------------------------------
  987.  
  988. UpgradeSoftware = +
  989.     ;
  990.     ; First determine whether we want to do upgrade or update for software
  991.     ; or hardware component. Then we will determine whether the Mode is
  992.     ; update or upgrade.
  993.     ;
  994.     ; If the same version of the product existed in the registry, we do
  995.     ; update. Otherwise, we will do a upgrade
  996.     ;
  997.     Debug-Output "UpgradeSoftware: ProductKeyName= "$(ProductKeyName)
  998.     Debug-Output "UpgradeSoftware: !NTN_RegBase  = "$(!NTN_RegBase)
  999.  
  1000.     ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
  1001.         ; Upgrade software component
  1002.         ;
  1003.         ; see whether the same version exist or not
  1004.         ;
  1005.     ;    Debug-Output "REG_H_LOCAL    = "$(!REG_H_LOCAL)
  1006.         Debug-Output "ProductKeyName = "$(ProductKeyName)
  1007.     ;    Debug-Output "MAXIMUM_ALLOWED= "$(MAXIMUM_ALLOWED)
  1008.         Debug-Output "KeyProduct     = "$(KeyProduct)
  1009.         
  1010.         OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
  1011.  
  1012.         Ifstr $(KeyProduct) != $(KeyNull)
  1013.             GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
  1014.             set Version = *($(VersionInfo), 4)
  1015.  
  1016.             ;
  1017.             ; Update the binaries
  1018.             ;
  1019.             Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
  1020.  
  1021.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1022.                 Debug-Output "ShellCode error"
  1023.                 goto ShellCodeError
  1024.             endif
  1025.  
  1026.             set !UG_Filename = $($R0)
  1027.  
  1028.             ifstr(i) $(!UG_Filename) != ""
  1029.                 install "Install-Update"
  1030.                 ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
  1031.                     goto fatal
  1032.                 endif
  1033.             endif
  1034.  
  1035.             ; Upgrade the version number
  1036.             ;
  1037.             SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
  1038.             SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
  1039.  
  1040.             ;
  1041.             ; do nothing for update
  1042.             ;
  1043.             ifint $(Version) != $(ProductVersion)
  1044.                ;
  1045.                ; If the major version number is not the same,
  1046.                ;    then this is a major upgrade. 
  1047.                ;         So Upgrade the product and
  1048.                ;         make other upgrade changes if necessary
  1049.                ;
  1050.             endif
  1051.             CloseRegKey $(KeyProduct)
  1052.         else
  1053.             ;
  1054.             ; Cannot Open software key, goto ERROR
  1055.             ;
  1056.             goto fatalregistry
  1057.         endif
  1058.     else
  1059.         ;
  1060.         ; upgrade/update hardware component
  1061.         ; There is no different between upgrade and update for hardware
  1062.         ; component
  1063.         ;
  1064.         ; 1. Get the Service Name
  1065.         ; 2. Change the NetRule section if necessary
  1066.         ;
  1067.         OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
  1068.               $(MAXIMUM_ALLOWED) NetworkCardKey
  1069.         Ifstr(i) $(NetworkCardKey) != $(KeyNull)
  1070.             ;
  1071.             ; Get Service name
  1072.             ;
  1073.             GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
  1074.             set ServiceName = *($(ServiceNameInfo), 4)
  1075.  
  1076.             ;
  1077.             ; Change the NetRule if necessary
  1078.             ;
  1079.             OpenRegKey $(NetworkCardKey) "" "NetRules" +
  1080.                 $(MAXIMUM_ALLOWED) NetRuleKey
  1081.             Ifstr(i) $(NetRuleKey) != $(KeyNull)
  1082.                 ;
  1083.                 ; Make the change....
  1084.                 ;
  1085.             else
  1086.                 ;
  1087.                 ; Error, cannot open net rules key
  1088.                 ;
  1089.                 goto fatalregistry
  1090.             endif
  1091.  
  1092.             CloseRegKey $(NetRules)
  1093.             CloseRegKey $(NetworkCardKey)
  1094.         else
  1095.             ;
  1096.             ; Error, cannot open network card key
  1097.             ;
  1098.             goto fatalregistry
  1099.         endif
  1100.         ;
  1101.         ; 3. Change the service section of the hardware. i.e.,
  1102.         ;    ParameterName change, value change, etc.
  1103.         ;
  1104.         OpenRegKey $(!REG_H_LOCAL) "" +
  1105.               $(!NTN_ServiceBase)"\"$(ServiceName) +
  1106.               $(MAXIMUM_ALLOWED) ServiceKey
  1107.  
  1108.         Ifstr(i) $(ServiceKey) != $(KeyNull)
  1109.             ;
  1110.             ; Get the ServiceKey to change the Start value
  1111.             ; or Type value. Or open Parameters key to
  1112.             ; change the hardware parameters if necessary.
  1113.             ;
  1114.             CloseRegKey $(ServiceKey)
  1115.         else
  1116.             ;
  1117.             ; Error, cannot open network card key
  1118.             ;
  1119.             goto fatalregistry
  1120.         endif
  1121.     endif
  1122.  
  1123.     goto end
  1124.     ;
  1125.     ; End of Upgrade Software
  1126.     ;
  1127.  
  1128. ;
  1129. ;  Escape hatches
  1130. ;
  1131. successful = +
  1132.     goto end
  1133.  
  1134. abandon = +
  1135.     ForListDo $(OEM_ABANDON_OPTIONS)
  1136.         Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  1137.             $(ProductSoftwareName), $($)
  1138.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1139.             Debug-Output "ShellCode error"
  1140.             goto ShellCodeError
  1141.         endif
  1142.  
  1143.         set RegistryErrorIndex = $($R0)
  1144.  
  1145.         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  1146.             goto fatalregistry
  1147.         endif
  1148.     EndForListDo
  1149.  
  1150.     Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
  1151.         ; Remove Software Component
  1152.         Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
  1153.             $(ProductSoftwareName), FALSE
  1154.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1155.             Debug-Output "ShellCode error"
  1156.             goto ShellCodeError
  1157.         endif
  1158.  
  1159.         set RegistryErrorIndex = $($R0)
  1160.  
  1161.         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  1162.             goto fatalregistry
  1163.         endif
  1164.     endif
  1165.  
  1166.     goto end
  1167.  
  1168. ;
  1169. ; warning display
  1170. ;
  1171. warning = +
  1172.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
  1173.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1174.         goto ShellCodeError
  1175.     endif
  1176.     ifstr(i) $($R1) == "OK"
  1177.         goto $(to)
  1178.     else-ifstr(i) $($R1) == "CANCEL"
  1179.         goto $(from)
  1180.     else
  1181.         goto "end"
  1182.     endif
  1183. ;
  1184. ; non fatal error display
  1185. ;
  1186. nonfatalinfo = +
  1187.     Set CommonStatus = STATUS_USERCANCEL
  1188.     Set Severity = STATUS
  1189.     goto nonfatalmsg
  1190. nonfatal = +
  1191.     Set Severity = NONFATAL
  1192.     goto nonfatalmsg
  1193. nonfatalmsg = +
  1194.     ifstr(i) $(Error) == ""
  1195.         Set Severity = NONFATAL
  1196.         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  1197.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1198.             goto ShellCodeError
  1199.         endif
  1200.         set Error = $($R0)
  1201.     endif
  1202.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
  1203.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1204.         goto ShellCodeError
  1205.     endif
  1206.     ifstr(i) $($R1) == "OK"
  1207.         goto $(from)
  1208.     else
  1209.         goto "end"
  1210.     endif
  1211.  
  1212. ;
  1213. ;  Registry is broken
  1214. ;
  1215. fatalregistry = +
  1216.     Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
  1217.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1218.         goto ShellCodeError
  1219.     endif
  1220.     set Error = $($R0)
  1221.     goto fatal
  1222. ;
  1223. ; fatal error display
  1224. ;
  1225. fatal = +
  1226.     ifstr(i) $(Error) == ""
  1227.         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  1228.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1229.             goto ShellCodeError
  1230.         endif
  1231.         set Error = $($R0)
  1232.     endif
  1233.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
  1234.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1235.         goto ShellCodeError
  1236.     endif
  1237.  
  1238.     goto setfailed
  1239.  
  1240. ;
  1241. ;  Shelling error
  1242. ;
  1243. ShellCodeError = +
  1244.     set DlgType      = "MessageBox"
  1245.     set STF_MB_TITLE = $(ShellCodeErrorTitle)
  1246.     set STF_MB_TEXT  = $(ShellCodeErrorText)
  1247.     set STF_MB_TYPE  = 1
  1248.     set STF_MB_ICON  = 3
  1249.     set STF_MB_DEF   = 1
  1250.     ui start "Error Message"
  1251.     goto setfailed
  1252.  
  1253. setfailed = +
  1254.     set CommonStatus = STATUS_FAILED
  1255.     ;
  1256.     ; if OEM_ABANDON_ON == TRUE, then remove the registry entries
  1257.     ;
  1258.     ifstr(i) $(OEM_ABANDON_ON) == TRUE
  1259.         set OEM_ABANDON_ON = FALSE
  1260.         goto abandon
  1261.     endif
  1262.     goto end
  1263.  
  1264. end = +
  1265.     goto term
  1266.  
  1267. term = +
  1268.  
  1269.     Return $(CommonStatus)
  1270.  
  1271.  
  1272. ;***************************************************************
  1273. ;  INSTALL SECTIONS
  1274. ;***************************************************************
  1275. [Install-Option]
  1276.     Debug-Output "Starting Install-Option"
  1277.     Debug-Output "AddCopy= "$(AddCopy)
  1278.     Debug-Output "DoCopy= "$(DoCopy)
  1279.     Debug-Output "Option= "$(Option)
  1280.     Debug-Output "Files-$(Option)= "Files-$(Option)
  1281.     Debug-Output "SrcDir= "$(SrcDir)
  1282.     Debug-Output "!STF_WINDOWSSYSPATH= "$(!STF_WINDOWSSYSPATH)
  1283.  
  1284.     set STF_VITAL = ""
  1285.  
  1286.     ifstr(i) $(AddCopy) == "YES"
  1287.         Debug-Output "Install-Option: AddCopy=YES"
  1288.  
  1289.         ;
  1290.         ; Add the files to the copy list
  1291.         ;
  1292.         AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  1293.         AddSectionFilesToCopyList Files-HLP $(SrcDir) $(!STF_WINDOWSSYSPATH)
  1294.  
  1295.     endif
  1296.  
  1297.     ifstr(i) $(DoCopy) == "YES"
  1298.         Debug-Output "Install-Option: DoCopy=YES"
  1299.  
  1300.        ;
  1301.        ; Copy files in the copy list
  1302.        ;
  1303.        set !STF_NCPA_FLUSH_COPYLIST = TRUE
  1304.        CopyFilesInCopyList
  1305.  
  1306.     endif
  1307.  
  1308.  
  1309.  
  1310.     ifstr(i) $(DoConfig) == "YES"
  1311.         Debug-Output "Install-Option: DoConfig=YES"
  1312.  
  1313.        ;
  1314.        ; Config if needed 
  1315.        ;
  1316.  
  1317.     endif
  1318.  
  1319.  
  1320.     Debug-Output "Install-Option: Preparing to Exit"
  1321.  
  1322.     Exit
  1323.  
  1324. [Install-Update]
  1325.     Debug-Output "Starting Install-Update"
  1326.     Debug-Output "Option= "$(Option)
  1327.     Debug-Output "SrcDir= "$(SrcDir)
  1328.     Debug-Output "!STF_WINDOWSSYSPATH "$(!STF_WINDOWSSYSPATH)
  1329.  
  1330.    set STF_VITAL        = ""
  1331.    set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
  1332.  
  1333. ;
  1334. ; see line below,  a comment??
  1335. ;
  1336.    ;set STF_VERSION     = "YES"
  1337.    ;set STF_VERSION     = "YES"
  1338.  
  1339.    AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  1340.    AddSectionFilesToCopyList Files-HLP $(SrcDir) $(!STF_WINDOWSSYSPATH)
  1341.    AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
  1342.  
  1343.    set !STF_NCPA_FLUSH_COPYLIST = TRUE
  1344.    CopyFilesInCopyList
  1345.  
  1346.    Exit
  1347.  
  1348.  
  1349.  
  1350.